package com.Questions.hash;


import java.util.*;

/**
 * 数组序号转换
 */
public class leetcode1331 {
    public int[] arrayRankTransform1(int[] arr) {
        Queue<Integer> q=new PriorityQueue<>();
        Map<Integer,Integer> map=new HashMap<>();
        for(int i=0;i<arr.length;++i){
            q.add(arr[i]);
            map.put(arr[i],i);
        }
        int i=1;
        for(int num:q){
            arr[map.get(num)]=i;
            i++;
        }
        return arr;
    }
    public int[] arrayRankTransform(int[] arr ) {
        int[] sortedArr = new int[arr.length];
        System.arraycopy(arr, 0, sortedArr, 0, arr.length);
        Arrays.sort(sortedArr);
        Map<Integer, Integer> ranks = new HashMap<Integer, Integer>();
        int[] ans = new int[arr.length];
        for (int a : sortedArr) {
            if (!ranks.containsKey(a)) {
                ranks.put(a, ranks.size() + 1);
            }
        }
        for (int i = 0; i < arr.length; i++) {
            ans[i] = ranks.get(arr[i]);
        }
        return ans;
    }
}
